Fluent Bit で「broken connection to」が不定期に発生するときの対処方法
困っていた内容
Fluent Bit を使って ECS タスクのログを CloudWatch Logs に転送しています。Fluent Bit のログを確認すると、ときどきですが CloudWatch Logs との接続が切断された旨のエラーが記録されています。
ざっくり確認した限り、ログの欠損などは起きていないようですが、何か設定が足りないのでしょうか。必要な対応があれば教えてください。
[error] [http_client] broken connection to logs.ap-northeast-1.amazonaws.com:443 ? [error] [output:cloudwatch_logs:cloudwatch_logs.0] Failed to send log events
どう対応すればいいの?
Fluent Bit のログからログが失われた記録がないか確認してください。
Fluent Bit でときおり接続エラー(broken connection to
)が発生するのは想定された挙動であり、エラーが発生した場合は自動的に再試行が行われます。再試行の結果、ログが CloudWatch Logs に正常に保管されている場合、対応は不要です。
そのため、まずは Fluent Bit のログを確認し、最終的にログがどのような状態になっているか確認してください。
aws-for-fluent-bit/debugging.md at mainline · aws/aws-for-fluent-bit
Fluent Bit is a very a low level tool, both in terms of the power over its configuration that it gives you, and in the verbosity of its log messages. Thus, it is normal to have errors in your Fluent Bit logs; its important to understand what these errors mean.
再試行もエラーとなった場合などログが失われた場合は、次のようなエラーが Fluent Bit のログに記録されます。エラーの記録がめったになく継続的に発生していない場合は、再試行の回数を増やすことを検討してください。デフォルトの再試行回数は一回で、Retry_Limit
オプションから変更できます。
※エラーが継続的に発生している場合は、ネットワーク経路など構成上の問題が考えられます。
[2022/02/16 20:11:36] [ warn] [engine] chunk '1-1645042288.260516436.flb' cannot be retried: task_id=0, input=tcp.3 > output=cloudwatch_logs.1
Scheduling and Retries - Fluent Bit: Official Manual
設定例
[OUTPUT] Name http Host 192.168.5.6 Port 8080 Retry_Limit False # 無制限に再試行を行う [OUTPUT] Name es Host 192.168.5.20 Port 9200 Logstash_Format On Retry_Limit 5 # 5回再試行を行う